package me.jessyan.mvparms.demo.mvp.contract;

import android.database.Observable;

import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;


import me.jessyan.mvparms.demo.mvp.model.entity.BaseJson;
import me.jessyan.mvparms.demo.mvp.model.entity.ParamJson;
import me.jessyan.mvparms.demo.mvp.model.entity.User;
import retrofit2.http.Body;

public interface UserContract {
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
        void setAdapter(DefaultAdapter adapter);

        void loginReturn(User user);//登录成功返回

        void logout();//退出

        void uploadResult(String string);

    }

    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
    interface Model extends IModel {

        //登陆
        android.database.Observable<BaseJson<User>> Login(@Body ParamJson param);

        //验证码登陆
        android.database.Observable<BaseJson<User>> LoginByCode(@Body ParamJson param);

        //注册
        android.database.Observable<BaseJson<User>> RegisterUser(@Body ParamJson param);

        //发送短信验证码
        android.database.Observable<BaseJson<String>> sendSMS(@Body ParamJson param);

        //检验短信验证码
        android.database.Observable<BaseJson<String>> checkSMS(@Body ParamJson param);

        //个人中心
//        Observable<BaseJson<PersonCenter>> GetPersonCenterInfo(@Body ParamJson param);

        //个人详情
        android.database.Observable<BaseJson<User>> GetUserDetailInfo(@Body ParamJson param);

        //修改用户详情
        android.database.Observable<BaseJson<String>> EditUserDetailInfo(@Body ParamJson param);

        //修改密码
        android.database.Observable<BaseJson<String>> EditPassword(@Body ParamJson param);

        //找回密码
        Observable<BaseJson<String>> ForgetPassword(@Body ParamJson param);



    }
}
